
 1000  *SAVE S.INTELLEC HEX FORMATTER
 1010         .OR $300
 1020  *--------------------------------
 1030  PORT       .EQ $00,01
 1040  CHECK.SUM  .EQ $02
 1050  TYPE       .EQ $03
 1060  COUNT      .EQ $04
 1070  REMAINING  .EQ $05,06
 1080  *--------------------------------
 1090  A1     .EQ $3C,3D
 1100  A2     .EQ $3E,3F
 1110  A3     .EQ $40,41
 1120  A4     .EQ $42,43
 1130  A5     .EQ $44,45
 1140  *--------------------------------
 1150  CTRLY.VECTOR        .EQ $3F8 THRU $3FA
 1160  DOS.REHOOK          .EQ $3EA
 1170  *--------------------------------
 1180  MON.NXTA4           .EQ $FCB4
 1190  MON.CROUT           .EQ $FD8E
 1200  MON.PRHEX           .EQ $FDDA
 1210  MON.COUT            .EQ $FDED
 1220  MON.SETVID          .EQ $FE93
 1230  *--------------------------------
 1240  *      SETUP CONTROL-Y
 1250  *--------------------------------
 1260  SETUP  LDA #SEND.DATA
 1270         STA CTRLY.VECTOR+1
 1280         LDA /SEND.DATA
 1290         STA CTRLY.VECTOR+2
 1300         LDA #$4C
 1310         STA CTRLY.VECTOR
 1320         RTS
 1330  *--------------------------------
 1340  *   *0:XX YY   (LO,HI OF PORT)
 1350  *   *TARGET<START.END<Y>
 1360  *      IF PORT IS 0, DO NOT CHANGE OUTPUT
 1370  *      IF PORT IS 1...7, OUTPUT TO SLOT.
 1380  *         ELSE OUTPUT TO SUBROUTINE
 1390  *      SEND BYTES START...END
 1400  *
 1410  *      1.  TURN ON OUTPUT PORT
 1420  *      2.  SEND DATA RECORDS
 1430  *      3.  SEND EOF RECORD
 1440  *      4.  TURN OFF OUTPUT PORT
 1450  *--------------------------------
 1460  SEND.DATA
 1470         JSR TURN.ON.OUTPUT.PORT
 1480         JSR SEND.DATA.RECORDS
 1490         JSR SEND.EOF.RECORD
 1500         JMP TURN.OFF.OUTPUT.PORT
 1510  *--------------------------------
 1520  TURN.ON.OUTPUT.PORT
 1530         LDX PORT+1     HI-BYTE OF PORT SPECIFIED
 1540         BNE .1
 1550         LDA PORT       LO-BYTE, MUST BE SLOT
 1560         AND #$07
 1570         BEQ .3       SLOT 0, JUST SCREEN
 1580         ORA #$C0
 1590         BNE .2       ...ALWAYS
 1600  .1     TXA          HI-BYTE OF SUBROUTINE
 1610         LDX PORT       LO-BYTE OF SUBROUTINE
 1620  .2     STA $37
 1630         STX $36
 1640         JSR DOS.REHOOK
 1650  .3     RTS
 1660  *--------------------------------
 1670  SEND.DATA.RECORDS
 1680         LDA #0
 1690         STA TYPE
 1700         INC A2       POINT JUST BEYOND THE END
 1710         BNE .1
 1720         INC A2+1
 1730  .1     SEC
 1740         LDX #32
 1750         LDA A2       SEE HOW MANY BYTES LEFT
 1760         SBC A1
 1770         STA REMAINING
 1780         LDA A2+1
 1790         SBC A1+1
 1800         STA REMAINING+1
 1810         BNE .2       USE MIN(32,A2-A1+1)
 1820         CPX REMAINING
 1830         BCC .2
 1840         LDX REMAINING
 1850         BEQ .3       ...FINISHED
 1860  .2     STX COUNT
 1870         JSR SEND.RECORD
 1880         JMP .1       ...ALWAYS
 1890  .3     RTS
 1900  *--------------------------------
 1910  SEND.EOF.RECORD
 1920         LDY #0
 1930         STY COUNT
 1940         INY
 1950         STY TYPE
 1960         LDA A5       RUN ADDRESS (LO)
 1970         STA A4
 1980         LDA A5+1     RUN ADDRESS (HI)
 1990         STA A4+1
 2000         JMP SEND.RECORD
 2010  *--------------------------------
 2020  TURN.OFF.OUTPUT.PORT
 2030         JSR MON.SETVID
 2040         JMP DOS.REHOOK
 2050  *--------------------------------
 2060  SEND.RECORD
 2070         LDA #":"
 2080         JSR MON.COUT
 2090         LDA #0
 2100         STA CHECK.SUM
 2110         LDA COUNT
 2120         JSR SEND.BYTE
 2130         LDA A4+1
 2140         JSR SEND.BYTE
 2150         LDA A4
 2160         JSR SEND.BYTE
 2170         LDA TYPE
 2180         JSR SEND.BYTE
 2190         LDA COUNT
 2200         BEQ .2
 2210         LDY #0
 2220  .1     LDA (A1),Y
 2230         JSR SEND.BYTE
 2250         JSR MON.NXTA4
 2260         DEC COUNT
 2270         BNE .1
 2280  .2     SEC
 2285         LDA #0
 2290         SBC CHECK.SUM
 2300         JSR SEND.BYTE
 2310         JSR MON.CROUT
 2320         LDA #$8A     LINEFEED
 2330         JMP MON.COUT
 2340  *--------------------------------
 2350  SEND.BYTE
 2360         PHA
 2370         CLC
 2380         ADC CHECK.SUM
 2390         STA CHECK.SUM
 2400         PLA
 2410         JMP MON.PRHEX
 2420  *--------------------------------

